package cn.funeralobjects.minecraft.service;

import cn.funeralobjects.minecraft.handler.PlayerLoginHandler;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 权限接口服务
 *
 * @author FuneralObjects
 * Create date: 2020/11/15 9:23 AM
 */
public interface MinecraftAuthService {

    /**
     * 按照顺序获取当前所有的登陆handler
     *
     * @return PlayerLoginHandler - Flux 流
     */
    Flux<PlayerLoginHandler> getAllHandlers();

    /**
     * 插入loginHandler
     *
     * @param index        插入位置
     * @param loginHandler loginHandler
     * @return 无返回 - Mono 流
     */
    Mono<Void> insert(Integer index, PlayerLoginHandler loginHandler);

    /**
     * 移除loginHandler
     *
     * @param index 被移除的位置
     * @return PlayerLoginHandler - Mono 流
     */
    Mono<PlayerLoginHandler> remove(Integer index);

    /**
     * 替换loginHandler
     *
     * @param index        被替换的位置
     * @param loginHandler loginHandler
     * @return 无返回 - Mono 流
     */
    Mono<Void> replace(Integer index, PlayerLoginHandler loginHandler);

}
